package com.ithuameng.admin.app.system.model.admin.vo;

import com.ithuameng.admin.app.system.model.Menu;
import com.ithuameng.admin.enums.MenuType;
import com.ithuameng.admin.enums.YesNo;
import lombok.Data;

import javax.validation.constraints.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 编辑菜单 VO
 *
 * @author ithuameng
 */
@Data
public class MenuEditVo {

    @NotNull(message = "编号为空")
    private Long id;

    /**
     * 名称
     */
    @NotBlank(message = "菜单名称为空")
    @Size(max = 50, message = "菜单名称不能超过50个字符")
    private String name;

    /**
     * 父权限编号
     */
    private Long parentId;

    /**
     * 父权限名称
     */
    private String parentName;

    /**
     * 页面路径
     */
    @Size(max = 200, message = "路由地址不能超过200个字符")
    private String path;

    /**
     * 前端组件
     */
    @Size(max = 200, message = "组件路径不能超过200个字符")
    private String component;

    /**
     * 权限类型
     */
    private MenuType type;

    /**
     * 参数
     */
    @Size(max = 200, message = "路由参数不能超过200个字符")
    private String query;

    /**
     * 是否为外链
     */
    private YesNo frame;

    /**
     * 是否显示
     */
    private YesNo display;

    /**
     * 是否缓存
     */
    private YesNo cache;

    /**
     * 状态
     */
    private YesNo status;

    /**
     * 图标
     */
    @Size(max = 200, message = "图标不能超过200个字符")
    private String icon;

    /**
     * 排序值
     */
    @Min(value = 0, message = "显示顺序值最小为0")
    @Max(value = 99999, message = "显示顺序值最大为99999")
    @NotNull(message = "显示顺序为空")
    private Integer seq;

    /**
     * 权限字符串
     */
    @Size(max = 200, message = "权限字符不能超过200个字符")
    private String perms;

    private List<Menu> children = new ArrayList<>();
}
